import { Editor } from "@bytemd/react";
import gfm from "@bytemd/plugin-gfm";
import highlight from "@bytemd/plugin-highlight";
import "bytemd/dist/index.css";
import "highlight.js/styles/vs.css";
import "github-markdown-css/github-markdown-light.css";
import "./index.css";

interface Props {
  value?: string;
  onChange?: (v: string) => void;
  placeholder?: string;
}

const plugins = [gfm(), highlight()];

/**
 * Markdown 编辑器
 * @param props
 * @constructor
 */
const MdEditor = (props: Props) => {
    // const { value = "", onChange, placeholder } = props;
    // Bytemd 编辑器在内部会对传入的 value 做 value.length 操作。
    // 当表单里某些字段（如题目内容、题解等）是 null 时，传到编辑器就不是字符串，
    // Bytemd 读 null.length 就会报错：Cannot read properties of null (reading 'length')。
    // 只要不是字符串（包括 null/undefined），就转成空字符串 ""，这样编辑器就不会崩了。
  const { value, onChange, placeholder } = props;
  const safeValue = typeof value === "string" ? value : "";

  return (
    <div className="md-editor">
      <Editor
        value={safeValue}
        placeholder={placeholder}
        mode="split"
        plugins={plugins}
        onChange={onChange}
      />
    </div>
  );
};

export default MdEditor;
